from lxml import etree

text='''
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <div class="menu">
        <li href="/a/b/java">java工程师</li>
        <li href="/a/b/java">python工程师</li>
        <li href="/a/b/java">c++工程师</li>
    </div> 
    <div class="test">
        <li class="item1">item number1</li>
        <li class="item2">item number2</li>
        <li class="item3">item number3</li>
    </div>  
</body>
</html>
'''

# 第一种读取数据方式 
html=etree.HTML(text)
r=html.xpath('//li/text()')
#['java工程师', 'python工程师', 'c++工程师',
#  'item number1', 'item number2', 'item number3']
print(r)

r=html.xpath('//li[1]/text()')
#['java工程师', 'item number1']
print(r)

r=html.xpath('//div[@class="menu"]/li[1]/text()')
#['java工程师']
print(r)

# 第二种读取字符串的方式
html=etree.parse('./test.html',parser=etree.HTMLParser())
# result=etree.tostring(html)
# print(result.decode('utf-8'))
r=html.xpath('//div[@class="menu"]/li[1]/text()')
#['java工程师']
print(r)